const app = getApp()
const { getMeetingNews } = require("../../utils/http/api")
const tool = require("../../utils/tool")

Page({
  /**
   * 页面的初始数据
   */
  data: {
    //获取全局变量 导航栏的高度statusBarHeight
    top: Number(app.globalData.menu.top),
    height: Number(app.globalData.menu.height),
    // 新闻详情数据
    newsDetail: {},
    relatedNews: [],
    viewCount: 0,
    isLiked: false,
    isCollected: false,
    showCollectAnimation: false,
    loading: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadNewsDetail()
    this.loadUserPreferences()
  },

  /**
   * 加载新闻详情
   */
  loadNewsDetail() {
    this.setData({
      loading: true
    })

    try {
      // 从存储中获取新闻详情数据
      const newsDetail = wx.getStorageSync('newsDetail')
      if (newsDetail) {
        // 处理时间格式
        if (newsDetail.createTime) {
          newsDetail.createTime = tool.changeTime(newsDetail.createTime, 10)
        }
        
        // 处理图片数组
        if (newsDetail.newsImage && typeof newsDetail.newsImage === 'string') {
          newsDetail.newsImage = newsDetail.newsImage.split(',')
        }

        this.setData({
          newsDetail,
          viewCount: Math.floor(Math.random() * 1000) + 100, // 模拟阅读量
          loading: false
        })

        // 加载相关新闻
        this.loadRelatedNews()
      } else {
        wx.showToast({
          title: '新闻数据不存在',
          icon: 'none'
        })
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      }
    } catch (error) {
      console.error('加载新闻详情失败:', error)
      this.setData({
        loading: false
      })
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
    }
  },

  /**
   * 加载相关新闻
   */
  loadRelatedNews() {
    getMeetingNews().then((res) => {
      if (res.rows && res.rows.length > 0) {
        const currentNewsId = this.data.newsDetail.newsId
        const relatedNews = res.rows
          .filter(item => item.newsId !== currentNewsId)
          .slice(0, 3) // 只显示3条相关新闻
        
        // 处理时间格式
        relatedNews.forEach((item) => {
          item.createTime = tool.changeTime(item.createTime, 10)
          if (item.newsImage && typeof item.newsImage === 'string') {
            item.newsImage = item.newsImage.split(',')
          }
        })

        this.setData({
          relatedNews
        })
      }
    }).catch((error) => {
      console.error('加载相关新闻失败:', error)
    })
  },

  /**
   * 预览图片
   */
  previewImage(e) {
    const current = e.currentTarget.dataset.current
    const urls = e.currentTarget.dataset.urls
    wx.previewImage({
      current,
      urls
    })
  },

  /**
   * 加载用户偏好设置
   */
  loadUserPreferences() {
    try {
      const newsId = this.data.newsDetail.newsId
      if (newsId) {
        const likedNews = wx.getStorageSync('likedNews') || []
        const collectedNews = wx.getStorageSync('collectedNews') || []
        
        this.setData({
          isLiked: likedNews.includes(newsId),
          isCollected: collectedNews.includes(newsId)
        })
      }
    } catch (error) {
      console.error('加载用户偏好失败:', error)
    }
  },

  /**
   * 保存用户偏好
   */
  saveUserPreferences() {
    try {
      const newsId = this.data.newsDetail.newsId
      if (newsId) {
        let likedNews = wx.getStorageSync('likedNews') || []
        let collectedNews = wx.getStorageSync('collectedNews') || []
        
        if (this.data.isLiked && !likedNews.includes(newsId)) {
          likedNews.push(newsId)
        } else if (!this.data.isLiked && likedNews.includes(newsId)) {
          likedNews = likedNews.filter(id => id !== newsId)
        }
        
        if (this.data.isCollected && !collectedNews.includes(newsId)) {
          collectedNews.push(newsId)
        } else if (!this.data.isCollected && collectedNews.includes(newsId)) {
          collectedNews = collectedNews.filter(id => id !== newsId)
        }
        
        wx.setStorageSync('likedNews', likedNews)
        wx.setStorageSync('collectedNews', collectedNews)
      }
    } catch (error) {
      console.error('保存用户偏好失败:', error)
    }
  },

  /**
   * 点赞功能
   */
  onLike() {
    const isLiked = !this.data.isLiked
    this.setData({
      isLiked
    })
    
    // 保存偏好设置
    this.saveUserPreferences()
    
    // 触觉反馈
    wx.vibrateShort({
      type: 'light'
    })
    
    wx.showToast({
      title: isLiked ? '❤️ 点赞成功' : '💔 取消点赞',
      icon: 'none',
      duration: 1500
    })
  },

  /**
   * 收藏功能
   */
  onCollect() {
    const isCollected = !this.data.isCollected
    this.setData({
      isCollected,
      showCollectAnimation: isCollected
    })
    
    // 保存偏好设置
    this.saveUserPreferences()
    
    // 触觉反馈
    wx.vibrateShort({
      type: isCollected ? 'medium' : 'light'
    })
    
    // 显示动画效果
    if (isCollected) {
      setTimeout(() => {
        this.setData({
          showCollectAnimation: false
        })
      }, 800)
    }
    
    wx.showToast({
      title: isCollected ? '⭐ 收藏成功' : '☆ 取消收藏',
      icon: 'none',
      duration: 1500
    })
  },

  /**
   * 分享功能
   */
  onShare() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    })
  },

  /**
   * 跳转到相关新闻
   */
  goToRelatedNews(e) {
    const item = e.currentTarget.dataset.item
    if (!item) return

    try {
      wx.setStorageSync('newsDetail', item)
      wx.redirectTo({
        url: '/pages/newsDetail/newsDetail'
      })
    } catch (error) {
      console.error('跳转失败:', error)
      wx.showToast({
        title: '跳转失败',
        icon: 'none'
      })
    }
  },

  /**
   * 返回上一页
   */
  goBack() {
    wx.navigateBack({
      delta: 1
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadNewsDetail()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: this.data.newsDetail.newsTitle || '绿色新闻',
      path: '/pages/newsDetail/newsDetail',
      imageUrl: this.data.newsDetail.newsImage && this.data.newsDetail.newsImage[0] ? this.data.newsDetail.newsImage[0] : ''
    }
  }
})